/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AccesoDatosAvanzado;

import AccesoDatosSimple.cFactura_Detalle;
import java.awt.List;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import sifact.conexion.cConexion;

/**
 *
 * @author Cyber Huevadictos
 */
public class AD_Factura_Detalle extends cConexion {
    //Metodo de Insercion

    public static Exception Insertar(cFactura_Detalle obj) throws Exception {
        Exception band;
        CallableStatement ps;
        Connection conector = estado();
        try {
            //preparar la llamada al procedimiento almacenado
            ps = conector.prepareCall("{call public.sp_insert_factura_detalle(?,?,?,?)}");
            //configurar parametros
            ps.setInt(1, obj.getNumIDFactura());
            ps.setInt(2, obj.getNumIDProducto());
            ps.setDouble(3, obj.getNumCantProducto());
            ps.setDouble(4, obj.getNumPrecioUnit());
            //ejecutar comando
            ps.execute();
            band = null;
            ps.close();
        } catch (Exception ex) {
            band = ex;
        }
        return band;
    }

    //Metodo de Busqueda por Codigo
    public static ArrayList BuscarFacturaDetalleCodigo(String codigo) throws Exception {
        String[] registro;//almacena las tuplas
        Statement cs;
        Connection cn = estado();
        ArrayList detalle = new ArrayList();

        try {
            if (cn != null) {

                cs = cn.createStatement();
                ResultSet rs = cs.executeQuery("select * from public.\"FACTURA_DETALLE\" where \"numIDFactura\" = " + Integer.parseInt(codigo) + ";");

                while (rs.next()) {
                    detalle.add(registro = new String[10]);
                    registro[0] = (rs.getString("numIDFactura"));
                    registro[1] = (rs.getString("numIDProducto"));
                    registro[2] = (rs.getString("numCantProducto"));
                    registro[3] = (rs.getString("numPrecioUnit"));
                    registro[4] = (rs.getString("numcolseq"));                    
                }
                rs.close();
                cs.close();
                cn.close();
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Se produjo el siguiente error:\n" + ex, "Error", JOptionPane.ERROR_MESSAGE);
        }

        return detalle;
    }
    //Metodo de Actualizacion
//    public static Exception Actualizar(cFactura_Detalle obj) throws Exception {
//        Exception band;
//        CallableStatement ps;
//        Connection conector = estado();
//        try {
//            ps = conector.prepareCall("{call public.sp_update_categorias(?,?,?,?)}");
//            ps.setInt(1, obj.getNumIDCategoria());
//            ps.setString(2, obj.getTxtNombreCategoria());
//            ps.setDouble(3,obj.getNumGDistribuidor() );
//            ps.setDouble(4, obj.getNumGCF());
//            //ejecutar comando
//            ps.execute();
//            band = null;
//            ps.close();
//        } catch (Exception ex) {
//            band = ex;
//        }
//        return band;
//    }
//Metodo de Eliminacion
//    public static Exception Eliminar(String cadena) throws Exception {
//        Exception band;
//        CallableStatement ps;
//        Connection conector = estado();
//        try {
//            ps = conector.prepareCall("{call public.sp_delete_categorias(?)}");
//            ps.setString(1, cadena);
//            ps.execute();
//            band = null;
//            ps.close();
//        } catch (Exception ex) {
//            band = ex;
//        }
//        return band;
//    }
}
